package cn.ondraw.ragflow.pojo.request;


import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 设置对话框的请求对象
 */
@Data
public class SetDialogRequest {
    /**
     * 对话框 ID
     */
    private String dialog_id;
    /**
     * 对话框名称，默认为 "New Dialog"
     */
    private String name = "New Dialog";
    /**
     * 对话框描述，默认为 "A helpful dialog"
     */
    private String description = "A helpful dialog";
    /**
     * 对话框图标
     */
    private String icon = "";
    /**
     * 前 N 个结果
     */
    private Integer top_n = 6;
    /**
     * 前 K 个结果
     */
    private Integer top_k = 1024;
    /**
     * 重排序 ID
     */
    private String rerank_id = "";
    /**
     * 相似度阈值
     */
    private Double similarity_threshold = 0.1;
    /**
     * 向量相似度权重
     */
    private Double vector_similarity_weight = 0.3;
    /**
     * 大语言模型设置
     */
    private Map<String, Object> llm_setting;
    /**
     * 知识库 ID 列表
     */
    private List<String> kb_ids;
    /**
     * 大语言模型 ID
     */
    private String llm_id;
    /**
     * 提示配置
     */
    private PromptConfig prompt_config;
}

/**
 * 提示配置类
 */
@Data
class PromptConfig {
    /**
     * 系统提示
     */
    private String system;
    /**
     * 开场白
     */
    private String prologue;
    /**
     * 参数列表
     */
    private List<Parameter> parameters;
    /**
     * 空响应提示
     */
    private String empty_response;
}

/**
 * 参数类
 */
@Data
class Parameter {
    /**
     * 参数键
     */
    private String key;
    /**
     * 是否可选
     */
    private Boolean optional;
}
